package com.bjsxt.creat2;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

//线程的创建方式三：实现Callable接口
public class TortoiseCallable implements Callable<Integer> {

    //特点：可以有返回值、可以抛出异常
    @Override
    public Integer call() throws Exception {
        //返回一个1-10的随机数
        return (int) (Math.random() * 10 + 1);
    }

    public static void main(String[] args) throws Exception {
        //创建一个Callable接口实现类的对象
        Callable c = new TortoiseCallable();
        //创建一个FutureTask对象，构造方法中需要一个Callable接口实现类的对象
        FutureTask<Integer> ft = new FutureTask<Integer>(c);
        //创建一个线程对象，构造方法中需要一个Runnable接口实现类的对象
        Thread t = new Thread(ft);
        //启动线程
        t.start();
        //获取线程执行结果
        int result = ft.get();
        System.out.println("乌龟的赛跑结果是：" + result);
    }
}
